package com.elitesland.system.repo;

import com.elitesland.system.entity.SysRolePermissionDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository;

import javax.transaction.Transactional;
import java.util.List;

/**
 * <pre>
 *     角色权限关联查询处理
 * </pre>
 * @author mir
 * @date 2020-09-28
 */
@Repository
public interface SysRolePermissionRepo extends JpaRepository<SysRolePermissionDO, Long>, QuerydslPredicateExecutor<SysRolePermissionDO> {

    /**
     * 根据权限ID列表，列出所有的对应的关联记录
     * @param permIds 权限ID列表
     * @return 角色权限对应记录
     */
    List<SysRolePermissionDO> findAllByPermissionIdIn(List<Long> permIds);

    @Transactional
    void deleteAllByRoleIdIn(List<Long> roleIds);

    @Transactional
    void deleteAllByPermissionIdIn(List<Long> permissionIds);

    @Transactional
    void deleteAllByRoleIdAndPermissionIdIn(Long roleId, List<Long> permissionId);

    @Transactional
    void deleteAllByIdIn(List<Long> ids);
}
